package com.crm.customers.dao;

import java.util.List;

import com.crm.customers.model.ContractMoneylog;

public interface ContractMoneylogDao {
    
    int deleteByPrimaryKey(Long id);
 
    int insert(ContractMoneylog record);
 
    ContractMoneylog insertSelective(ContractMoneylog record);
 
    ContractMoneylog selectByPrimaryKey(ContractMoneylog record);
    
    ContractMoneylog selectById(Long id);
    /**
     * 查询没有绑定合同的垫款记录
     * @param record
     * @return
     */
    List<ContractMoneylog> selectByContract(ContractMoneylog record);
 
    int updateByPrimaryKeySelective(ContractMoneylog record);
    /**
     * 查询列表
     * @param record
     * @return
     */
    List<ContractMoneylog>  selectListByParam(ContractMoneylog record);
    
    /**
     * 根据传入的条件查询记录数
     * */
    int selectLogCountByParams(ContractMoneylog cml); 
    /**
     * 取得签单总额
     * @param cml
     * @return
     */
    int selectTotalMoneyByParams(ContractMoneylog cml);
    
    /**
     * 搜索银行关键字
     * */
    public List<ContractMoneylog> selectBnakName(ContractMoneylog cml);
    
    /**
     * 判断合同是否有记录
     * */
    public int selectCountFromLog(Long id);
    
    /**
     * 
     * */
    public int updateContractid(ContractMoneylog cml);
    
    /**
     * 
     * */
    public int selectskcount(ContractMoneylog cml);
    
    public int selectapproveskcount(Long id);
    
    /**
     * 根据条件获取垫款列表
     * */
    public List<ContractMoneylog> getDKlistByParams(ContractMoneylog cml);
    
    /**
     * 根据条件获取垫款/收款/付款记录条数
     * */
    public int getcmlcountbytype(ContractMoneylog cml);
    
    /**
     * 根据条件获取对应年份，月份的签单数，垫款，收款，付款总金额
     * type控制是签单数还是垫款还是收款还是付款
     * */
    public Integer getcmlcountbycreatedate(ContractMoneylog cml);
    
    /**
     * 获取所有已通过审核的付款金额
     * */
    public Integer getAllApprovedMoney(ContractMoneylog cml);
    
    /**
     * 获取所有已通过审核并绑定了对应合同的预付款总额
     * */
    public Integer getAllApprovedAdvanceMoney(ContractMoneylog cml);
    
    /**
     * 获取某一合同中所有人才合同未绑定合同的垫款列表
     * */
    public List<ContractMoneylog> getAllApproveAdvanceList(ContractMoneylog cml);
    
    /**
     * 根据合同id，人才id找出已消的垫款，并恢复
     * */
    public int addAdvanceMoneyLog(ContractMoneylog cml);
    
    /**
     * 获取合同最后的回款时间
     * */
    public String getLastBackMoneyTime(Long contractid);
    
    
}